package net.danielpaz.pucc.poo.trabalho.view;

import javax.swing.*;

import net.danielpaz.pucc.poo.trabalho.model.*;

import java.awt.event.*;
import java.awt.*;

class GuiManterVenda extends JFrame {

	JLabel label1, label2, label3, label4;
	JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar,
			btSair;
	static JTextField tfID, tfIdVendedor, tfIdAlbum, tfData;
	private VendaDAO vendaDAO;
	Venda venda = new Venda();

	// private AtendenteDAO atendenteDAO;

	public static void main(String args[]) {
		JFrame janela = new GuiManterVenda();
		janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setVisible(true);
	}

	public GuiManterVenda() {
		inicializarComponentes();
		definirEventos();
	}

	public void inicializarComponentes() {
		getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));
		setTitle("Cadastro de Atendentes");
		setBounds(200, 100, 610, 120);
		label1 = new JLabel("ID ");
		label2 = new JLabel("ID Vendedor");
		label3 = new JLabel("ID Album");
		label4 = new JLabel("Data");
		tfID = new JTextField(4);
		tfIdVendedor = new JTextField(4);
		tfIdAlbum = new JTextField(4);
		tfData = new JTextField(10);
		
		btGravar = new JButton(null, null);
		btGravar.setText("Gravar");
		btGravar.setToolTipText("Gravar");
		btAlterar = new JButton(null, null);
		btAlterar.setText("Alterar");
		btAlterar.setToolTipText("Alterar");
		btExcluir = new JButton(null, null);
		btExcluir.setText("Excluir");
		btExcluir.setToolTipText("Excluir");
		btLocalizar = new JButton(null, null);
		btLocalizar.setText("Localizar");
		btLocalizar.setToolTipText("Localizar");
		btNovo = new JButton(null, null);
		btNovo.setText("Novo");
		btNovo.setToolTipText("Novo");
		btCancelar = new JButton(null, null);
		btCancelar.setText("Cancelar");
		btCancelar.setToolTipText("Cancelar");
		btSair = new JButton(null, null);
		btSair.setText("Sair");
		btSair.setToolTipText("Sair");

		getContentPane().add(label1);
		getContentPane().add(tfID);
		getContentPane().add(label2);
		getContentPane().add(tfIdVendedor);
		getContentPane().add(label3);
		getContentPane().add(tfIdAlbum);
		getContentPane().add(label4);
		getContentPane().add(tfData);
		getContentPane().add(btNovo);
		getContentPane().add(btLocalizar);
		getContentPane().add(btGravar);
		getContentPane().add(btAlterar);
		getContentPane().add(btExcluir);
		getContentPane().add(btCancelar);
		getContentPane().add(btSair);
		setBotoes(true, true, false, false, false, false);
		vendaDAO = new VendaDAO();
		if (!vendaDAO.bd.getConnection()) {
			JOptionPane.showMessageDialog(null,
					"Falha na conexao, o sistema sera fechado!");
			System.exit(0);
		}
	}

	public void definirEventos() {

		btSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				vendaDAO.bd.close();
				System.exit(0);
			}
		});
		btNovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
				setBotoes(false, false, true, false, false, true);
			}
		});
		btCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				limpaCampos();
			}
		});
		btGravar.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				if (tfID.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O id nao pode ser vazio!");
					tfID.requestFocus();
					return;
				}
				if (tfIdVendedor.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O id do vendedor nao pode ser vazio!!");
					tfIdVendedor.requestFocus();
					return;
				}
				if (tfIdAlbum.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"O id do album nao pode ser vazio!");
					tfIdAlbum.requestFocus();
					return;
				}
				if (tfData.getText().equals("")) {
					JOptionPane.showMessageDialog(null,
							"A data nao pode ser vazia!");
					tfData.requestFocus();
					return;
				}
				

				venda.setId(Integer.parseInt(tfID.getText()));
				venda.setIdVendedor(Integer.parseInt(tfIdVendedor.getText()));
				venda.setIdAlbum(Integer.parseInt(tfIdAlbum.getText()));
				venda.setData(tfData.getText());
								

				JOptionPane.showMessageDialog(null,
						vendaDAO.atualizar(AtendenteDAO.INCLUSAO, venda));
				limpaCampos();
			}
		});
		btAlterar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				venda.setId(Integer.parseInt(tfID.getText()));
				venda.setIdVendedor(Integer.parseInt(tfIdVendedor.getText()));
				venda.setIdAlbum(Integer.parseInt(tfIdAlbum.getText()));
				venda.setData(tfData.getText());
				JOptionPane.showMessageDialog(null,
						vendaDAO.atualizar(AtendenteDAO.ALTERACAO, venda));

				limpaCampos();
			}
		});
		btExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				venda.setId(Integer.parseInt(tfID.getText()));
				vendaDAO.localizar(GerenteDAO.INCLUSAO, venda);
				int n = JOptionPane.showConfirmDialog(null,
						venda.getId(), " Excluir o Gerente? ",
						JOptionPane.YES_NO_OPTION);
				if (n == JOptionPane.YES_OPTION) {
					JOptionPane.showMessageDialog(null, vendaDAO.localizar(
							GerenteDAO.EXCLUSAO, venda));
					limpaCampos();
				}
			}
		});
		btLocalizar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				atualizaCampos();
			}
		});
	}

	public void limpaCampos() {
		tfID.setText("");
		tfIdVendedor.setText("");
		tfIdAlbum.setText("");
		tfData.setText("");
		tfID.requestFocus();

		setBotoes(true, true, false, false, false, false);
	}

	public void atualizaCampos() {
		venda.setId(Integer.parseInt(tfID.getText()));
		if (vendaDAO.localizar(GerenteDAO.ALTERACAO, venda)) {
			tfID.setText(Integer.toString(venda.getId()));
			tfIdVendedor.setText(Integer.toString(venda.getIdVendedor()));
			tfIdAlbum.setText(Integer.toString(venda.getIdAlbum()));
			tfData.setText(venda.getData());
			setBotoes(true, true, false, true, true, true);
		} else {
			JOptionPane.showMessageDialog(null, "Gerente nao encontrado!");
			limpaCampos();
		}
	}

	public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
			boolean bAlterar, boolean bExcluir, boolean bCancelar) {
		btNovo.setEnabled(bNovo);
		btLocalizar.setEnabled(bLocalizar);
		btGravar.setEnabled(bGravar);
		btAlterar.setEnabled(bAlterar);
		btExcluir.setEnabled(bExcluir);
		btCancelar.setEnabled(bCancelar);
	}
}
